package net.da.core.bof;

import java.util.Calendar;

import net.da.core.exception.DaException;

public interface BusinessObject extends PersistentObject {

    public void lock(OrganizationUser organizationUser) throws DaException;

    public void unLock(OrganizationUser organizationUser) throws DaException;

    public void checkout();

    public void cancelCheckout();

    public void checkin();

    public boolean isCheckedOut();

    public boolean isCheckedOutBy(OrganizationUser user);

    public BusinessObject saveAsNew();

    public void saveLock();

    public Integer getVersion();

    public void setVersion(Integer version);

    public Calendar getModifyDate();

    public Calendar getCreationDate();

    public Boolean isHidden();

    public void setHidden(Boolean isHidden);

    public Boolean isImmutable();

    public void setImmutable(Boolean isImmutable);

    public Boolean isArchived();

    public void setArchived(Boolean isArchived);

    public User getLockOwner();

    public User getCreator();

    public User getModifier();

    public User getOwner();

    public Calendar getLockDate();

    public Boolean isLocked();

}
